// 扑克牌花色定义 (根据接口文档)
// 注意：花色值用于计算卡牌ID，公式为 (suit << 8) + rank
export enum CardSuit {
  DIAMOND = 1, // 方块 (1 << 8 = 256)
  CLUB = 2,    // 梅花 (2 << 8 = 512)
  HEART = 3,   // 红桃 (3 << 8 = 768)
  SPADE = 4,   // 黑桃 (4 << 8 = 1024)
  SMALL_JOKER = 5, // 小王
  BIG_JOKER = 6    // 大王
}

// 扑克牌面值定义 (根据接口文档)
export enum CardRank {
  TWO = 0,   // 2
  THREE = 1, // 3
  FOUR = 2,  // 4
  FIVE = 3,  // 5
  SIX = 4,   // 6
  SEVEN = 5, // 7
  EIGHT = 6, // 8
  NINE = 7,  // 9
  TEN = 8,   // 10
  JACK = 9,  // J
  QUEEN = 10, // Q
  KING = 11,  // K
  ACE = 12,   // A
  SMALL_JOKER = 13, // 小王
  BIG_JOKER = 14    // 大王
}

// 牌型定义 (掼蛋规则)
export enum CardPattern {
  PASS = 0,        // 过牌
  SINGLE = 1,      // 单张
  PAIR = 2,        // 对子
  TRIPLE = 3,      // 三张 (刻子)
  TRIPLE_WITH_PAIR = 4, // 三带二 (葫芦)
  WOOD_BOARD = 5,  // 木板 (三个连续对子，如 778899)
  STEEL_BOARD = 6, // 钢板 (两个连续三张，如 333444)
  STRAIGHT = 7,    // 顺子 (包括连对、飞机)
  FOUR_BOMB = 8,   // 四炸
  FIVE_BOMB = 9,   // 五炸
  SAME_SUIT_STRAIGHT = 10, // 同花顺
  SIX_BOMB = 11,   // 六炸
  SEVEN_BOMB = 12, // 七炸
  EIGHT_BOMB = 13, // 八炸
  NINE_BOMB = 14,  // 九炸
  TEN_BOMB = 15,   // 十炸
  KING_BOMB = 16   // 天王炸 (大小王)
}

// 扑克牌接口
export interface Card {
  id: number        // 扑克牌ID，根据公式计算: (suit << 8) + rank
  suit: CardSuit    // 花色
  rank: CardRank    // 面值
  display: string   // 显示文本
}

// 牌型组合接口
export interface CardCombination {
  type: CardPattern // 牌型
  cards: Card[]     // 包含的牌
  power: number     // 牌力值，用于比较大小
}

// 花色中文映射
export const SUIT_NAMES: Record<CardSuit, string> = {
  [CardSuit.DIAMOND]: '方块',
  [CardSuit.CLUB]: '梅花',
  [CardSuit.HEART]: '红桃',
  [CardSuit.SPADE]: '黑桃',
  [CardSuit.SMALL_JOKER]: '小王',
  [CardSuit.BIG_JOKER]: '大王'
}

// 面值中文映射
export const RANK_NAMES: Record<CardRank, string> = {
  [CardRank.TWO]: '2',
  [CardRank.THREE]: '3',
  [CardRank.FOUR]: '4',
  [CardRank.FIVE]: '5',
  [CardRank.SIX]: '6',
  [CardRank.SEVEN]: '7',
  [CardRank.EIGHT]: '8',
  [CardRank.NINE]: '9',
  [CardRank.TEN]: '10',
  [CardRank.JACK]: 'J',
  [CardRank.QUEEN]: 'Q',
  [CardRank.KING]: 'K',
  [CardRank.ACE]: 'A',
  [CardRank.SMALL_JOKER]: '小王',
  [CardRank.BIG_JOKER]: '大王'
}

// 牌型中文映射 (掼蛋规则)
export const PATTERN_NAMES: Record<CardPattern, string> = {
  [CardPattern.PASS]: '过牌',
  [CardPattern.SINGLE]: '单张',
  [CardPattern.PAIR]: '对子',
  [CardPattern.TRIPLE]: '三张',
  [CardPattern.TRIPLE_WITH_PAIR]: '三带二',
  [CardPattern.WOOD_BOARD]: '木板',
  [CardPattern.STEEL_BOARD]: '钢板',
  [CardPattern.STRAIGHT]: '顺子',
  [CardPattern.FOUR_BOMB]: '四炸',
  [CardPattern.FIVE_BOMB]: '五炸',
  [CardPattern.SAME_SUIT_STRAIGHT]: '同花顺',
  [CardPattern.SIX_BOMB]: '六炸',
  [CardPattern.SEVEN_BOMB]: '七炸',
  [CardPattern.EIGHT_BOMB]: '八炸',
  [CardPattern.NINE_BOMB]: '九炸',
  [CardPattern.TEN_BOMB]: '十炸',
  [CardPattern.KING_BOMB]: '天王炸'
}